

from rest_framework import serializers
from goods.models import SKUImage,SKU
from fdfs_client.client import Fdfs_client


class SKUSimpleModelSerialzier(serializers.ModelSerializer):
    class Meta:
        model = SKU
        fields = [
            'id',
            'name'
        ]


class ImageModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = SKUImage
        fields = [
            'id',
            'sku',
            'image'
        ]

    # 前端传来的是图片数据，需要将图片上传到fdfs中
    # 但是模型类序列化器无法帮助我们完成图片上传操作
    # 需要我们自己在校验的过程中手动上传
    # def validate(self, attrs):
    #     # 进行图片上传操作
    #
    #     # file:指的是一个文件对象
    #     file = attrs.get("image")
    #
    #     # 1、读取文件数据
    #     content = file.read()
    #     # 2、使用fdfs客户端程序上传文件
    #     conn = Fdfs_client('./meiduo_mall/client.conf')
    #     # 3、使用连接对象上传文件
    #     # {
    #     #             'Group name'      : group_name,
    #     #             'Remote file_id'  : remote_file_id,
    #     #             'Status'          : 'Upload successed.',
    #     #             'Local file name' : '',
    #     #             'Uploaded size'   : upload_size,
    #     #             'Storage IP'      : storage_ip
    #     #         } if success else None
    #     res = conn.upload_by_buffer(content)
    #
    #     if res['Status'] != 'Upload successed.':
    #         # 判断文件上传失败
    #         raise serializers.ValidationError("文件上传失败！")
    #
    #     file_id = res['Remote file_id']
    #
    #     # 修改有效数据中的image字段呢？
    #     # 答：目前有效数据中的image字段的值是一个文件对象，而我们需要在mysql中记录
    #     # 的image字段的值是文件上传之后的唯一标识
    #     attrs['image'] = file_id
    #     return attrs








